<script>
  /*
  找出按规则得分最高的单词
  根据字母的位置，每个字母有自己的分值，a = 1, b = 2, c = 3 按字母表顺序以此类推
  返回值为得分最高的单词
  如果两个最高分单词得分一样，先出现的排在前面
  测试的字符串所有字符都为小写字符
  */
  function high(x) {
    const s = "abcdefghijklmnopqrstuvwxyz";

    return x
      .split(" ")
      .map((w) => {
        const score = [...w].reduce((sum, l) => {
          return sum + s.indexOf(l) + 1;
        }, 0);
        return [w, score];
      })
      .sort((a, b) => b[1] - a[1])[0][0];
  }

  console.log(high("man i need a taxi up to ubud")); // 'taxi'
  console.log(high("what time are we climbing up the volcano")); // 'volcano'
  console.log(high("take me to semynak")); // 'semynak'
  console.log(high("b aa b")); // 'b'
  console.log(high("b aa")); // 'b'
  console.log(high("bb d")); // 'bb'
  console.log(high("d bb")); // 'd'
  console.log(high("aaa ab b c")); // 'aaa'

  // 函数返回随机数，要求是从n-m之间的整数
  // 第三个参数表示是否包含结尾数字
  // 比如random(1,10,false)返回 >=1 并 <10的整数
  // 如果random(1,10,true)返回 >=1 并 <=10的整数
  function random(n, m, includes = false) {
    if (!includes) {
      return Math.floor(Math.random() * (m - 1) + 1);
    } else {
      return Math.floor(Math.random() * m + 1);
    }
  }

  console.log(random(1, 10));
  console.log(random(1, 10, true));

  // 函数：输入一个由小写英文字母构成的字符串，当前每个字母都向后移两位，如a->c, b->d, ...y->a, z->b，将转换后的字符串返回。比如'abc' -> 'cde', 'python' ->'ravjqp'
  function convert(string) {
    const s = "abcdefghijklmnopqrstuvwxyz";
    return [...string].map((c) => s[s.indexOf(c) + 2]).join("");
  }

  console.log(convert("abc")); // 'cde'
  console.log(convert("python")); // 'ravjqp'

  /*
  将一个csv（逗号分隔的数据）数据解析成一个对象的数组
  */

  function csv2array(str) {
    // 你的代码
    const [head, ...data] = str.split("\n");
    const heads = head.split(",");
    return data.map((line) => {
      return line.split(",").reduce((r, item, index) => {
        r[heads[index].trim()] = item.trim();
        return r;
      }, {});
    });
  }

  let csv = `第一栏, 第二栏
  a, b
  c, d`;
  console.log(csv2array(csv));
  /*
    [
      {'第一栏': 'a', '第二栏': 'b'},
      {'第一栏': 'c', '第二栏': 'd'}
    ]
  */
</script>
